/*
 * Copyright (c) 2024-2025 Huawei Device Co., Ltd.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */


// WARNING! THIS FILE IS AUTO-GENERATED, DO NOT MAKE CHANGES, THEY WILL BE LOST ON NEXT GENERATION!

import { int32, int64, float32 } from "@koalaui/common"
import { KInt, KPointer, KBoolean, KStringPtr, wrapCallback, NativeBuffer } from "@koalaui/interop"
import { NodeAttach, remember } from "@koalaui/runtime"
import { Resource } from "./ArkResourceInterfaces"
import { PixelMap } from "./ArkPixelMapMaterialized"
import { VideoController } from "./ArkVideoControllerMaterialized"
import { ImageAIOptions, ImageAnalyzerConfig } from "./ArkImageCommonInterfaces"
import { CommonMethod } from "./ArkCommonInterfaces"
import { ImageFit } from "./ArkEnumsInterfaces"
import { VoidCallback } from "./ArkUnitsInterfaces"
import { Callback_FullscreenInfo_Void, Callback_PreparedInfo_Void, Callback_PlaybackInfo_Void, Callback_Void } from "./SyntheticDeclarations"
export enum SeekMode {
    PREVIOUS_KEYFRAME = 0,
    PreviousKeyframe = 0,
    NEXT_KEYFRAME = 1,
    NextKeyframe = 1,
    CLOSEST_KEYFRAME = 2,
    ClosestKeyframe = 2,
    ACCURATE = 3,
    Accurate = 3
}
export enum PlaybackSpeed {
    SPEED_FORWARD_0_75_X = 0,
    Speed_Forward_0_75_X = 0,
    SPEED_FORWARD_1_00_X = 1,
    Speed_Forward_1_00_X = 1,
    SPEED_FORWARD_1_25_X = 2,
    Speed_Forward_1_25_X = 2,
    SPEED_FORWARD_1_75_X = 3,
    Speed_Forward_1_75_X = 3,
    SPEED_FORWARD_2_00_X = 4,
    Speed_Forward_2_00_X = 4
}
export interface FullscreenInfo {
    fullscreen: boolean;
}
export interface PreparedInfo {
    duration: number;
}
export interface PlaybackInfo {
    time: number;
}
export interface VideoOptions {
    src?: string | Resource;
    currentProgressRate?: number | string | PlaybackSpeed;
    previewUri?: string | PixelMap | Resource;
    controller?: VideoController;
    imageAIOptions?: ImageAIOptions;
}
export type VideoInterface = (value: VideoOptions) => VideoAttribute;
export interface VideoAttribute extends CommonMethod<VideoAttribute> {
    muted: boolean;
    autoPlay: boolean;
    controls: boolean;
    loop: boolean;
    objectFit: ImageFit;
    onStart: VoidCallback;
    onPause: VoidCallback;
    onFinish: VoidCallback;
    onFullscreenChange: ((parameter: FullscreenInfo) => void);
    onPrepared: ((parameter: PreparedInfo) => void);
    onSeeking: ((parameter: PlaybackInfo) => void);
    onSeeked: ((parameter: PlaybackInfo) => void);
    onUpdate: ((parameter: PlaybackInfo) => void);
    onError: (() => void);
    onStop: (() => void);
    enableAnalyzer: boolean;
    analyzerConfig: ImageAnalyzerConfig;
}
